A hash table defines a mapping relationship between keys and their associated values. A Distributed Hash Table (DHT) implements the functionality of a hash table in a distributed fashion, providing a remote lookup service from any participating node in the DHT to retrieve the value associated with a given key. DHTs are used to provide services, including distributed file systems, peer-to-peer file sharing, cooperative web caching, multicast, domain name services, and instant messaging, for example.
DHT can implement large-scale resource indexing and discovery services, as well as distributed file systems. An application example is to use DHT in a distributed content lookup and retrieval system to store the network addresses of contents, indexed by the hash of the contents. Or the DHT can be used to store the contents directly, depending on the implementation.
DHT is the foundation of many Peer-to-peer network applications that emphasize the characteristics of decentralization, scalability, and fault tolerance. The semantic-free nature of the key-value mappings allows applications on top of DHT to define arbitrary relationship between keys (index) and values (data). It also decouples the actual locations from any existing structure of the contents and services. This property makes it possible to achieve load-balancing and avoid centralization even for services with hierarchical architecture.